PHP中的代码执行,命令执行与常见bypass技巧

您所在的位置:网站首页 linux free命令实现 PHP中的代码执行,命令执行与常见bypass技巧

PHP中的代码执行,命令执行与常见bypass技巧

2023-03-12 21:16| 来源: 网络整理| 查看: 265

命令执行目录

PHP中的命令执行与代码执行

命令执行与代码执行

常见的代码执行函数

常见的命令执行函数:

linux中用于打开文件的函数:

Trick

特殊字符bypass

重定义$GET bypass

无参RCE

无字母数字webshell

linux逻辑运算符

通过匹配符:

数字构造:

disable_function bypass

提前终止

open_dir

写文件利用

PHP中的命令执行与代码执行

最近在复习之前学过得知识点。因为之前是0基础来学习的,所以很多东西可能是没有弄懂的。现在重新回顾一下命令执行这一块。学到了不少的知识。

命令执行与代码执行

在PHP中我们首先要搞清楚什么是代码执行,什么是命令执行。

通俗一点讲,代码执行是执行PHP代码。命令执行是执行linux系统下的命令。

这两者是有区别的。有些代码在php下看起来是有错的,但是在linux下是正确的。

在下面的文章里遇到了再分析。

常见的代码执行函数

在PHP中,允许我们自行传入php代码并执行。一般我们常用的有以下几种:

1.eval($string):把参数中的字符串当做php代码执行。该字符串必须是合法的代码,且必须以分号结尾。这里强调了合法代码和分号结尾。我们可以理解为eval()执行了一个相当于为$string添加php短标签的功能即 来代替。因为php语法中,最后一句php代码可以不闭合。#这里需要格外指出,eval()是一个语言构造器而不是一个函数,不能被可变函数调用。----------------------------------------------------------------------------------------​2.assert($assertion):如果assertion是字符串,那么将会被assert()当作php代码执行。且可以不以分号结尾。#在PHP7以前assert是作为函数。PHP7以后,assert与eval一样。都是语言构造器。这个知识点可能会出现在$_POST[1]($_POST[2])中

----------------------------------------------------------------------------------------​3.call_user_func($func,$string):该函数用于函数调用。我们第一个参数作为调用函数,第二个作为回调函数的参数。算不上代码执行。只能说是一个危险函数。

常见的命令执行函数:

在PHP中,允许我们执行系统程序命令。一般有以下函数:

1.system():执行一个外部程序命令,并且输出执行结果,返回最后一行。#这里理解一下输出执行结果,返回最后一行。是指先将命令执行的结果打印出来,然后再将最后一行作为返回值。#可以理解为它函数内部存在一个 print($result);return last->result;这样子。#如果命令中需要用空格分开的话,就需要对执行的命令加上引号。-------------------------------------------------------------------------------------------------------------------2.exec():执行一个外部程序。并返回执行结果最后一行的内容。#这里只返回执行结果的最后一行内容。不会有输出打印。-------------------------------------------------------------------------------------------------------------------3.passthru():执行外部程序并且显示原始输出-------------------------------------------------------------------------------------------------------------------4.shell_exec():该函数等价于 ` `通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。#该函数不会显示执行结果。需要加echo才会打印输出结果。``是shell_exec()的简化形式。实际是同一个函数。-------------------------------------------------------------------------------------------------------------------linux中用于打开文件的函数:more:一页一页的显示档案内容less:与 more 类似head:查看头几行tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示tail:查看尾几行nl:显示的时候,顺便输出行号od:以二进制的方式读取档案内容,搭配-c参数读内容vi:一种编辑器,这个也可以查看vim:一种编辑器,这个也可以查看sort:可以查看uniq:可以查看

Trick特殊字符bypass空格bypass:1.%092.重定向 3.${IFS}4./**/ 注释符

单词bypass:1.cat -->ca\t2.flag -->fl\ag  fl''ag f*

字母bypass:1.FLAG -->F[9-M][9-M]G​

重定义$GET bypass前提:存在代码执行函数eavl($GET[1]);

1=$_GET[2]&2=phpinfo();​

无参RCE以下内容可自由搭配。并在php代码中调试。​highlight_file(next(array_reverse(scandir(pos(localeconv())))));Localeconv()返回包含本地数字及货币格式信息的数组该函数的第一个值就是”.”Cuurent()返回数组中当前元素的值Next()指针指向下一个元素并且输出Array_reverse()以相反的顺序返回数组Print_r()打印变量Higlight_file高亮显示文件,没什么好说的Show_source跟highlight_file一样的效果。Array_reverse倒序数组Array_rand随机取出数组中的一个或多个单元Array_filp交换数组的键和值Readfile读文件sessionid()返回当前会话IDscandir(directory,sorting_order,context)以数组形式返回文件和目录第一个参数是目录,第二个是排序方式pos取第一个值

无字母数字webshell

无字母数字webshell exp

异或型:


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3